import type { Block } from '../../types'
import { BlockEnum } from '../../types'
import { BlockClassificationEnum } from './types'

export const BLOCKS: Block[] = [
  {
    classification: BlockClassificationEnum.Default,
    type: BlockEnum.Start,
    title: 'Start',
    description: '',
  },
  {
    classification: BlockClassificationEnum.Default,
    type: BlockEnum.End,
    title: 'End',
  },
  {
    classification: BlockClassificationEnum.Logic,
    type: BlockEnum.IfElse,
    title: 'IF/ELSE',
  },
  {
    classification: BlockClassificationEnum.Logic,
    type: BlockEnum.Iteration,
    title: 'Iteration',
  },
  {
    classification: BlockClassificationEnum.Logic,
    type: BlockEnum.Wait,
    title: 'Wait',
  },
  {
    classification: BlockClassificationEnum.Logic,
    type: BlockEnum.ListFilter,
    title: 'List Filter',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.LLM,
    title: 'LLM',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.ImageGenerator,
    title: 'Image Generator',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.VideoGenerator,
    title: 'Video Generator',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.SpeechGenerator,
    title: 'Speech Generator',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.Code,
    title: 'Code',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.CLI,
    title: 'Html Extractor',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.HttpRequest,
    title: 'HTTP Request',
  },
  {
    classification: BlockClassificationEnum.Utilities,
    type: BlockEnum.WebAssembly,
    title: 'WebAssembly',
  },
  // {
  //   classification: BlockClassificationEnum.Transform,
  //   type: BlockEnum.TemplateTransform,
  //   title: 'Templating Transform',
  // },
  {
    classification: BlockClassificationEnum.Logic,
    type: BlockEnum.VariableAggregator,
    title: 'Variable Aggregator',
  },
  {
    classification: BlockClassificationEnum.Transform,
    type: BlockEnum.DocExtractor,
    title: 'Doc Extractor',
  },
  // {
  //   classification: BlockClassificationEnum.Transform,
  //   type: BlockEnum.Assigner,
  //   title: 'Variable Assigner',
  // },
  // {
  //   classification: BlockClassificationEnum.Transform,
  //   type: BlockEnum.ParameterExtractor,
  //   title: 'Parameter Extractor',
  // },
  {
    classification: BlockClassificationEnum.Data,
    type: BlockEnum.MetaOperator,
    title: 'Meta Data Operator',
  },
  {
    classification: BlockClassificationEnum.Data,
    type: BlockEnum.DataOperator,
    title: 'Data Operator',
  },
  {
    classification: BlockClassificationEnum.Data,
    type: BlockEnum.SQLOperator,
    title: 'SQL Operator',
  },
  {
    classification: BlockClassificationEnum.Transform,
    type: BlockEnum.HtmlExtractor,
    title: 'Html Extractor',
  },
]

export const BLOCK_CLASSIFICATIONS: string[] = [
  BlockClassificationEnum.Default,
  BlockClassificationEnum.Logic,
  BlockClassificationEnum.Utilities,
  BlockClassificationEnum.Data,
  BlockClassificationEnum.Transform,
]
